package org.springblade.tms.module.car.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springblade.tms.global.constant.DateConstant;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @projectName: BladeX
 * @package: org.springblade.tms.module.car.vo
 * @className: CarExcelVO
 * @author: yr
 * @description: 车辆excel实体类
 * @date: 2022/4/27 9:47
 */
@Data
public class CarExcelVO {
	private static final long serialVersionUID = 1L;

	/**
	 * 车牌号
	 */
	@ExcelProperty(value = "车牌照号")
	@ApiModelProperty(value = "车牌号")
	@NotBlank(groups = {tractor.class,vehicle.class})
	private String carNo;
	/**
	 * 车辆类型
	 */
	@ExcelProperty("车辆类型（例：整车、牵引车、挂车）")
	@ApiModelProperty(value = "车辆类型")
	@NotBlank(groups = {trailer.class, tractor.class,vehicle.class})
	private String carType;
	/**
	 * 运输物品类型(危货.普货)
	 */
	@ExcelProperty("普货/危化品（例：普货、危化品）")
	@ApiModelProperty(value = "运输物品类型(危货.普货)")
	@NotBlank(groups = {tractor.class,vehicle.class})
	private String transportGoodsType;
	/**
	 * 挂车车牌号
	 */
	@ExcelProperty("挂车号")
	@ApiModelProperty(value = "挂车车牌号")
	@NotBlank(groups = {trailer.class})
	private String bindCarNo;
	/**
	 * 挂车行驶证号码
	 */
	@ExcelProperty("挂车行驶证号")
	@ApiModelProperty(value = "挂车行驶证号码")
//	@NotBlank(groups = {trailer.class})
	private String certificationBindCarTransportNo;
	/**
	 * 挂车校验有效期-开始
	 */
	@ExcelProperty("挂车校验有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "挂车校验有效期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {trailer.class})
	private Date certificationBindCarCheckValidStart;
	/**
	 * 挂车校验有效期-结束
	 */
	@ExcelProperty("挂车校验有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "挂车校验有效期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {trailer.class})
	private Date certificationBindCarCheckValidEnd;
	/**
	 * 牵引车行驶证号
	 */
	@ExcelProperty("牵引车行驶证号")
	@ApiModelProperty(value = "牵引车行驶证号")
//	@NotBlank(groups = {tractor.class,vehicle.class})
	private String certificationCarTransportNo;
	/**
	 * 牵引车校验有效期-结束
	 */
	@ExcelProperty("牵引车校验有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "牵引车校验有效期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {tractor.class,vehicle.class})
	private Date certificationCarCheckValidEnd;
	/**
	 * 牵引车校验有效期-开始
	 */
	@ExcelProperty("牵引车校验有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "牵引车校验有效期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {tractor.class,vehicle.class})
	private Date certificationCarCheckValidStart;
	/**
	 * 牵引车营运证号码
	 */
	@ExcelProperty("牵引车营运证号")
	@ApiModelProperty(value = "牵引车营运证号码")
	@NotBlank(groups = {tractor.class,vehicle.class})
	private String certificationCarWorkNo;
	/**
	 * 牵引车营运证有效期开始
	 */
	@ExcelProperty("牵引车营运证有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "牵引车营运证有效期开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {tractor.class,vehicle.class})
	private Date certificationCarWorkValidStart;
	/**
	 * 牵引车营运证有效期结束
	 */
	@ExcelProperty("牵引车营运证有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "牵引车营运证有效期结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {tractor.class,vehicle.class})
	private Date certificationCarWorkValidEnd;
	/**
	 * 挂车营运证号
	 */
	@ExcelProperty("挂车营运证号")
	@ApiModelProperty(value = "挂车营运证号")
	@NotBlank(groups = {trailer.class})
	private String certificationBindCarWorkNo;
	/**
	 * 挂车营运证有效期开始
	 */
	@ExcelProperty("挂车营运证有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "挂车营运证有效期开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {trailer.class})
	private Date certificationBindCarWorkValidStart;
	/**
	 * 挂车营运证有效期结束
	 */
	@ExcelProperty("挂车营运证有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "挂车营运证有效期结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	@NotNull(groups = {trailer.class})
	private Date certificationBindCarWorkValidEnd;
	/**
	 * 车架号/车辆识别号
	 */
	@ExcelProperty("车架号/车辆识别码")
	@ApiModelProperty(value = "车架号/车辆识别号")
	@NotBlank(groups = {tractor.class,vehicle.class})
	private String carFlag;
	/**
	 * 交强险
	 */
	@ExcelProperty("交强险")
	@ApiModelProperty(value = "交强险")
	private String vehicleInsurance;
	/**
	 * 罐体报告编号
	 */
	@ExcelProperty("罐体报告编号")
	@ApiModelProperty(value = "罐体报告编号")
	private String containerNo;
	/**
	 * 罐体报告有效期-开始
	 */
	@ExcelProperty("罐体报告有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "罐体报告有效期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date containerReportValidStart;
	/**
	 * 罐体报告有效期-结束
	 */
	@ExcelProperty("罐体报告有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "罐体报告有效期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date containerReportValidEnd;
	/**
	 * 是否启用GPS
	 */
	@ExcelProperty("是否启用GPS（例：是=1，否=0）")
	@ApiModelProperty(value = "是否启用GPS")
	private Integer enableGps;
	/**
	 * 车牌颜色
	 */
	@ExcelProperty("车牌颜色")
	@ApiModelProperty(value = "车牌颜色")
	private String carColor;
	/**
	 * 最大载重
	 */
	@ExcelProperty("最大载重（单位：TO）")
	@ApiModelProperty(value = "最大载重")
	private BigDecimal maxLoad;
	/**
	 * 货箱容积
	 */
	@ExcelProperty("货箱容积（单位：M³）")
	@ApiModelProperty(value = "货箱容积")
	private BigDecimal maxCapacity;
	/**
	 * 高
	 */
	@ExcelProperty("高（单位：M）")
	@ApiModelProperty(value = "高")
	private BigDecimal attrH;
	/**
	 * 长
	 */
	@ExcelProperty("长（单位：M）")
	@ApiModelProperty(value = "长")
	private BigDecimal attrD;
	/**
	 * 宽
	 */
	@ExcelProperty("宽（单位：M）")
	@ApiModelProperty(value = "宽")
	private BigDecimal attrW;
	/**
	 * 紧急切断阀是否安装
	 */
	@ExcelProperty("紧急切断阀是否安装（例：是=1,否=0）")
	@ApiModelProperty(value = "紧急切断阀是否安装")
	private Integer esv;
	/**
	 * 是否安装灭火器
	 */
	@ExcelProperty("是否配备灭火器（例：是=1,否=0）")
	@ApiModelProperty(value = "是否安装灭火器")
	private Integer fireOff;
	/**
	 * 交强险有效期-开始
	 */
	@ExcelProperty("交强险有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "交强险有效期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date vehicleInsuranceValidStart;

	/**
	 * 交强险有效期-结束
	 */
	@ExcelProperty("交强险有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "交强险有效期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date vehicleInsuranceValidEnd;

	/**
	 * 气罐车使用证
	 */
	@ExcelProperty("气罐车使用证")
	@ApiModelProperty(value = "气罐车使用证")
	private String certificateTankTruck;

	/**
	 * 压力容器有效期-开始
	 */
	@ExcelProperty("压力容器有效期-开始（例：2021/9/30）")
	@ApiModelProperty(value = "压力容器有效期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date certificateTankTruckStart;


	/**
	 * 压力容器有效期-结束
	 */
	@ExcelProperty("压力容器有效期-结束（例：2021/9/30）")
	@ApiModelProperty(value = "压力容器有效期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(DateConstant.NORMAL_FORMAT)
	private Date certificateTankTruckEnd;

	/**
	 * GPS设备号
	 */
	@ExcelProperty("GPS设备号")
	@ApiModelProperty(value = "GPS设备号")
	private String gpsEquipmentNumber;
	/**
	 * Vin号
	 */
	@ExcelProperty("Vin号")
	@ApiModelProperty(value = "Vin号")
	private String vinNumber;
	/**
	 * 发动机号
	 */
	@ExcelProperty("发动机号")
	@ApiModelProperty(value = "发动机号")
	private String engineNumber;

	//挂车校验
	public interface trailer {

	}

	//牵引车校验
	public interface tractor {

	}

	//整车校验
	public interface vehicle {

	}
}
